package com.bootdo.app.controller;

import com.bootdo.app.common.msg.Response;
import com.bootdo.app.common.utils.CommonResponse;
import com.bootdo.app.common.utils.JWTUtil;
import com.bootdo.app.common.utils.WeChatConfig;
import com.bootdo.system.domain.TbWxuser;
import com.bootdo.system.service.WxUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.Map;

/**
 * @auther: 作者: Along
 * @description: 小程序控制类
 */
@RestController
@RequestMapping(value = "/wxLogin")
public class MiniProgramController {


	@Autowired
	private WxUserService wxUserService;


//	@ResponseBody
//	@RequestMapping(value = "/rememberDoLogin", method = RequestMethod.POST, produces = "application/json;charset=utf-8")
//	public Response rememberDoLogin(@RequestBody TbWxuser userPro, HttpServletRequest request) {
//		if(userPro == null) {
//			return Response.fail();
//		}
//		// 创建工具类
//		WeChatConfig weChatConfig = new WeChatConfig();
//		// 获取前端传来code值
//		String code = userPro.getCode();
//		System.out.println("记录登录状态 code--:" + code);
//		try {
//			// 根据code获取当前用户openId和unionid
//			Map map = weChatConfig.weChatGetOpenIdPro(code);
//			String openid = map.get("openid").toString();
//			System.out.println("记录登录状态 openid--:" + openid);
//
//			if (map.containsKey("unionid")) {
//				// 如果存在unionid则通过unionid查找相应对象
//				TbWxuser user = wxUserService.selectUserInfoByUnionid(map.get("unionid").toString());
//				// 情况1,公众号登陆过,小程序也登陆过
//				if (user != null && user.getOpenid() != null) {
//					// 更新最后登录时间
////					user.setLoginTime(DateUtil.formatLongDateTime(new Date()));
////					// 更新最后登录时的IP
////					user.setLoginIp(WXPay.getIpAddr(request));
////					// 更新操作
////					userService.updateUser(user);
//					wxUserService.insert2update(user);
//				}
//
//				// 情况2,公众号登陆过,小程序第一次登陆
//				if (user != null && user.getOpenid() == null) {
//					user.setOpenidXcx(openid);
//					// 更新操作
//					wxUserService.insert2update(user);
//				}
//
//				// JWT验证
//				JWTUtil jwtUtil1 = new JWTUtil();
//				// 过期时间
//				String jwt = jwtUtil1.createJWT(String.valueOf(user.getId()), 300000000L);
//				CommonResponse commonResponse = new CommonResponse();
//				commonResponse.setToken(jwt);
//				commonResponse.setCode(0);
//				commonResponse.setData(user);
//				commonResponse.setMsg("success");
//				commonResponse.setCount("1");
//				Response.success(commonResponse);
//			}
//
//			// 情况3,没有获取到unionid,只获取到openid
//			TbWxuser user = wxUserService.getUserById(openid);
////			User user = userService.selectUserInfo(openid);
//			if (user != null) {
////				// 更新最后登录时间
////				user.setLoginTime(DateUtil.formatLongDateTime(new Date()));
////				// 更新最后登录时的IP
////				user.setLoginIp(WXPay.getIpAddr(request));
////				// 更新操作
//				wxUserService.insert2update(user);
//
//			} else {
//				// 情况4:都是第一次登陆,则新建用户
//				// 获取推荐人ID
//				Integer parentId = userPro.getWxuserId();
//				// 如果没推荐人ID则置为0
//				if (parentId == null) {
//					parentId = 0;
//				}
//				// 获取用户注册来源
//				String registerSource = userPro.getSubscribeScene();
//				// 为空则为自己关注进入
//				if (registerSource == null) {
//					registerSource = "4";
//				}
//				if (registerSource.equals("1")) {
//					registerSource = "小程序分享";
//				}
//				if (registerSource.equals("2")) {
//					registerSource = "二维码分享";
//				}
//				if (registerSource.equals("3")) {
//					registerSource = "我的名片分享";
//				}
//				if (registerSource.equals("4")) {
//					registerSource = "自行进入";
//				}
//				// 赋值
//				userPro.setWxuserId(Integer.valueOf(parentId));
//				userPro.setSubscribeScene(registerSource);
//				userPro.setOpenid(openid);
//				// 创建新用户
//				wxUserService.insert2update(user);
//			}
//			// JWT验证
//			JWTUtil jwtUtil1 = new JWTUtil();
//			// 过期时间
//			String jwt = jwtUtil1.createJWT(String.valueOf(user.getId()), 300000000L);
//			CommonResponse commonResponse = new CommonResponse();
//			commonResponse.setToken(jwt);
//			commonResponse.setCode(0);
//			commonResponse.setData(user);
//			commonResponse.setMsg("success");
//			commonResponse.setCount("1");
//			Response.success(commonResponse);
//		} catch (Exception e) {
//			System.out.println("classname:WeChatController,method:rememberDoLogin");
//		}
//		return Response.fail();
//	}
}
